package ck.com.api;

import ck.com.dto.Dto;
import ck.com.pojo.GoodsAllocation;
import ck.com.pojo.PickorderDetail;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface GoodsAllocationApi {

    /** 新增货位
     *   参数，内包括
     *              whId 仓库id
     *              startShelf,开始货架数，endShelf结束货架数
     *              startLayer,开始层数，endLayer结束层数
     *              startPosition 开始位置，endPosition 结束位置。
     *              通过这些参数循环生成货位对象，同时插入到数据库中
     * @return 执行成功的条数
     */
    @RequestMapping(value = "/insertGA")
    Dto<Integer> insertGA();
    /** 新增货位
     * @param param 参数，内包括
     *              goodsId 的集合
     * @return 执行成功的条数
     */
    @RequestMapping(value = "/listGAByGoodsId")
    Dto<List<GoodsAllocation>> listGAByGoodsId(@RequestBody Map<String, Object> param);
    /** 新增货位
     *   根据条件查找空闲货位
     * @return 执行成功的条数
     */
    @RequestMapping(value = "/listGAIsEmpty")
    Dto<PageInfo<GoodsAllocation>> listGAIsEmpty(@RequestBody Map<String, Object> param);
    /** 新增货位
     *              货位的集合
     * @return 执行成功的条数
     */
    @RequestMapping(value = "/updateGAOnShelf")
    Dto<Integer> updateGAOnShelf(@RequestBody List<GoodsAllocation> goodsAllocationList);
    /** 新增货位
     *              货位的集合
     * @return 执行成功的条数
     */
    @RequestMapping(value = "/updateGAOnShelfCompleted")
    Dto<Integer> updateGAOnShelfCompleted(@RequestBody List<GoodsAllocation> goodsAllocationList);

    @RequestMapping("/getGaById")
    Dto<PageInfo<GoodsAllocation>> getGaById(@RequestBody Map<String, Object> map);
    @RequestMapping("/getRightGA")
    Dto<List<Integer>> getRightGA(@RequestParam("shelfId") Integer shelfId);;
    @RequestMapping("/setPickingStatus")
    Dto<Integer> setPickingStatus(@RequestBody List<PickorderDetail> list);
    @RequestMapping("/unlockGA")
    Dto<Integer> unlockGA(@RequestParam("shelfId")Integer shelfId,
                          @RequestParam("quantityOfGoods") Integer quantityOfGoods);
}
